Traditionally, in process oriented projects, software testing has been carried out by writing test cases and executing them either manually or through automation to test each functionality of the Application Under Test (AUT). Initially a testing team has to manually write the test cases and then executing all the test cases in a short span of time available for testing is difficult. The testing team has to ensure that the coverage of the test cases covers the AUT, while writing the test cases.
To achieve this, development and testing resources that include personnel and the infrastructure, depending on the project, have to be increased enormously leading to very huge cost and time. Also, often increasing resources may not be a feasible option as the resources may not be available on-demand every time. Also, the software may be developed for multiple environments, necessitating testing in all the multiple environments which increases the challenge. Software development methodologies like Agile cause an even bigger challenge due to the frequent releases (as a result of shorter life cycles).
Currently, Model Based Testing (MBT) methodology is an alternative to writing test cases/test scripts manually and has been gaining grounds, especially for embedded and larger critical applications space. In model based testing methodology, an exhaustive set of test cases and test scripts for automated execution are generated automatically, resulting in better test coverage. Test cases/test scripts are generated using all the permutations and combinations of the data set of each object within a state of the application. Due to this, an exhaustive testing is performed on the AUT. Depending on the nature of the AUT, most of the times, such exhaustive testing may not be required.
The MBT methodology is acceptable for applications for which the cumulative automated and manual testing cycle fits comfortably in the budgeted regression cycle period. However, for the rest of the applications, a reduced or an optimized test suite has to be identified from the generated test suite. This is generally performed manually and it depends on the skill of the team to identify the test cases which will form part of the optimized test suite. This may result in loss in proper test coverage of the AUT. Also, the testing team has to spend a significant amount of team in identifying the test cases. This may result in a reduction in testing time available to the team, which may adversely affect the quality of the testing.